package com.xt.website_manager.service;
/*
 * @Author 爱尚实训赵国鑫
 * @ClassName  CategoryService
 * @Date 2019/8/18/10:10
 * @Description TODO:(一句话描述这个类)
 */

import com.xt.website_manager.po.Category;
import com.xt.website_manager.po.CategoryExt;
import com.xt.website_manager.po.CategorySecond;
import org.springframework.web.multipart.MultipartFile;

import java.util.ArrayList;
import java.util.List;

public interface CategoryService {

    /**
     * 获取一二级类目集合
     * @return List<CategoryExt>
     */
    ArrayList<CategoryExt<CategorySecond>> getAllCategories();

    /**
     * 获取一级类目集合
     * @return
     */
    List<Category> getCategories();


    /**
     * 根据一级类目id获取二级类目集合
     * @param cid
     * @return
     */
    List<CategorySecond> findCategorySecondByCid(Integer cid);

    /**
     * 根据一级类目id删除一级类目
     * @param id
     * @return
     */
    Integer findCategoryCountByCid(Integer id);
    /**
     * 查询全部二级类目
     */
    List<CategorySecond> getAllCategorysecond();

    /**
     * 根据类目类型查询二级类目
     */
    List<CategorySecond> findCategorySecondByType(Integer type);

    /**
     * 根据二级类目查询其对应的一级类目
     */
    Category findCategoryByCsid(Integer csid);



    /**
     *根据一级类目id查询一级类目
     */
    Category getCategoryByCid(Integer cid);

    /**
     * 根据二级类目id查询二级类目
     * @param id
     * @return
     */
    CategorySecond getCategorySecond(Integer id);

    /**
     * 修改一级类目
     * @param category 一级类目对象
     * @param file     banner图file
     * @param prevPath 原文件路径
     * @param realPath 项目路径
     */
    void updateCategory(Category category, MultipartFile file, String prevPath, String realPath);

    /**
     * 添加一级类目
     * @param category
     * @param file
     * @param realPath
     */
    void addCategory(Category category, MultipartFile file, String realPath);

    /**
     * 根据id删除一级类目
     * @param id
     * @param realPath
     */
    void delCategory(Integer id, String realPath);

    /**
     * 更改一级类目优先级
     * @param category
     */
    void changeCategorySort(Category category);

    /**
     * 查询一级类目详情，并查询该类目下的全部二级类目
     */
    CategoryExt<CategorySecond> findCategoryByCid(Integer cid);




    /**
     * 添加二级类目
     * @param categorySecond
     * @param file
     * @param realPath
     */
    void addCategorySecond(CategorySecond categorySecond, MultipartFile file, String realPath);

    /**
     * 删除二级类目
     * @param csid
     * @param realPath
     */
    void delCategorySecond(Integer csid, String realPath);

    /**
     * 更改二级类目优先级
     */
    void changeCategoryCsSort(CategorySecond categorySecond);

    /**
     * 修改二级类目
     * @param categorySecond
     * @param file
     * @param prevPath
     * @param realPath
     */
    void updateCategorySecond(CategorySecond categorySecond, MultipartFile file, String prevPath, String realPath);


    /**
     * 更改全部二级类目的类目类型
     * @param type
     */
    void updateCategorySecondType(Category type);
}
